package com.pn.taikao.entity;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Map;

/**
 * 题目实体
 */
@Data
public class Question {
    private Long id;
    
    /**
     * 题型：single(单选题)、multiple(多选题)、judge(判断题)、fill(填空题)、essay(主观题)
     */
    private String type;
    
    /**
     * 题干（题目内容）
     */
    private String content;
    
    /**
     * 选项（JSON格式，用于选择题）
     * 格式：{"A": "选项A内容", "B": "选项B内容", ...}
     * 或：["选项1", "选项2", ...]
     */
    private Map<String, String> options;
    
    /**
     * 正确答案
     * 单选题：单个选项字母，如 "A"
     * 多选题：多个选项字母，如 "A,B,C"
     * 判断题：true/false 或 1/0
     * 填空题：答案文本
     * 主观题：参考答案文本
     */
    private String answer;
    
    /**
     * 题目解析
     */
    private String analysis;
    
    /**
     * 难度等级：easy(简单)、medium(中等)、hard(困难)
     */
    private String difficulty;
    
    /**
     * 基准分数
     */
    private Double score;
    
    /**
     * 所属课程ID
     */
    private Long courseId;
    
    private String createBy;
    private LocalDateTime createTime;
    private String updateBy;
    private LocalDateTime updateTime;
    
    // Getter and Setter for options as JSON string for MyBatis
    public String getOptionsJson() {
        return options != null ? JSON.toJSONString(options) : null;
    }
    
    public void setOptionsJson(String optionsJson) {
        this.options = optionsJson != null ? JSON.parseObject(optionsJson, new TypeReference<Map<String, String>>() {}) : null;
    }
}

